package poo.banca;

public class ContoConFido extends ContoBancario{
    private double fido=1000;
    private double scoperto=0;
    public ContoConFido( String numero ){
        super( numero );
    }
    public ContoConFido( String numero, double bilancio ){
        super( numero, bilancio );
    }
    public ContoConFido( String numero, double bilancio, double fido ){
        super( numero, bilancio ); this.fido=fido;
    }

    @Override
    public void deposita( double quanto ){
		if( quanto<=0 )
			throw new IllegalArgumentException("Ammontare invalido.");
		if( quanto<=scoperto ){
			scoperto -=quanto;
		}
		else{
			double residuo=quanto-scoperto;
			scoperto=0; super.deposita( residuo );
		}
	}//deposita

    @Override
    public boolean preleva( double quanto ){
      if( quanto<=0 ) return false;
      if( quanto<=saldo() ){
		  super.preleva( quanto );
		  return true;
	  }
      if( quanto<=saldo()+fido-scoperto ){
		  double residuo=saldo();
		  super.preleva( residuo );
		  scoperto+=quanto-residuo;
		  return true;
	  }
  	  return false;
    }//preleva

    public double fido(){ return this.fido; }//fido
    public void nuovoFido( double fido ){ this.fido=fido; }//nuovoFido
    public double scoperto(){ return scoperto; }//scoperto

    public String toString(){
       return super.toString()+String.format(
              " fido=E %1.2f scoperto=E %1.2f", fido, scoperto );
    }//toString

}//ContoConFido

